/*
 * Grid.h
 *
 *  Created on: 2 oct. 2009
 *      Author: Jey
 */

#include "Node.h"

#ifndef GRID_H_
#define GRID_H_
#include <vector>
#include <string>

class Grid
{
	public:

	// Constructeur et Destructeur

		Grid();
		~Grid();

	// Méthode publique

		void CheckLine(int x);
		// Vérifier si la valeur est dans la ligne

		void CheckColumn(int x);
		// Vérifier si la valeur est dans la colonne

		void CheckSquare(int x);
		// Vérifier si la valeur est dans le carré

		void ImportGrid(std::string Filename);
		// Récupérer une grille donnée par l'utilisateur

		void ExportGrid();
		// Afficher la grille à l'écran

		int GetNbColumn();
		// Récupérer le nombre de colonne

		int GetNbLine();
		// Récupérer le nombre de ligne

		bool IsFixed(int x);
		// Vérifier si la valeur de la node est fixée

		bool Contradict(int x);
		// Tester si la valeur temporaire de la node est possible

		void BackTrack(int x);
		// Backtracking

	// Attributs et méthodes privés
	private:

		int NbColumn;
		int NbLine;

		std::vector<Node*> GridVector;
};

#endif /* GRID_H_ */
